package com.cn.core.utils;


import java.util.Date;
import java.util.concurrent.TimeUnit;

/**
 * 类简介: 日期实用程序
 *
 * @Author: ShangGuan
 * @Time: 2024/05/13
 **/
public class DateUtils {

    /**
     * 推迟日期
     *
     * @param startTime  开始时间
     * @param timeNumber 时间编号，推迟的时间
     * @param timeUnit   时间单位
     * @return {@link Date}
     */

    public static Date postponeDate(Date startTime, Integer timeNumber, TimeUnit timeUnit) {
        long millis = timeUnit.toMillis(timeNumber);
        long endTime = startTime.getTime() + millis;
        return new Date(endTime);
    }

    /**
     * 提前日期
     *
     * @param startTime  开始时间
     * @param timeNumber 时间编号
     * @param timeUnit   时间单位
     * @return {@link Date }
     */
    public static Date advanceDate(Date startTime, Integer timeNumber, TimeUnit timeUnit){
        long millis = timeUnit.toMillis(timeNumber);
        long endTime = startTime.getTime() - millis;
        return new Date(endTime);
    }

    /**
     * 时间到期
     * 如果时间过期就返回true
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return boolean
     */
    public static boolean isTimeExpires(Date startTime, Date endTime) {
        return startTime.compareTo(endTime)>0;
    }


    /**
     * 时间没有过期
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return boolean
     **/
    public static boolean isNotTimeExpires(Date startTime, Date endTime) {
        return !isTimeExpires(startTime, endTime);
    }
}
